#include <stdio.h>
#include <stdlib.h>
#define MaxSize 15
typedef int ElemType;
typedef struct {
    ElemType data[MaxSize];
    int length;
} SqList;
// 初始化顺序表
void InitList(SqList *&L) {
    L = (SqList *)malloc(sizeof(SqList));
    L->length = 0;
}

// 销毁顺序表
void DestroyList(SqList *&L) {
    free(L);
}

// 判断顺序表是否为空
bool ListEmpty(SqList *L) {
    // return (*L).length == 0;
    return L->length == 0;
}

// 求顺序表的长度
int ListLength(SqList *L);
// 判断线性表是否已满
bool ListFull(SqList *L);
// 输出顺序表中的元素，以空格分隔，结尾不能有空格，输出结束后换行
void DispList(SqList *L);
// 求顺序表中第i个元素的值，用e返回
bool GetElem(SqList *L, int i, ElemType &e);
// 查找顺序表中第一个值与e相等的元素的位序
int LocateElem(SqList *L, ElemType e);
// 在顺序表L中第i个位置插入新的元素e
bool ListInsert(SqList *&L, int i, ElemType e);
// 删除顺序表L中第i个位置的元素，并用e返回其值
bool ListDelete(SqList *&L, int i, ElemType &e);

int main() {
    int n, m;
    SqList *L;
    InitList(L);
    scanf("%d %d", &n, &m);
    for (int i = 1; i <= n; i++) {
        ElemType e;
        scanf("%d", &e);
        ListInsert(L, i, e);
    }
    for (int k = 0; k < m; k++) {
        char op;
        scanf(" %c", &op);
        switch (op) {
        case 'I': {
            int i;
            ElemType e;
            scanf("%d%d", &i, &e);
            if (!ListInsert(L, i, e)) {
                printf("Error\n");
            }
            break;
        }
        case 'D': {
            int i;
            ElemType e;
            scanf("%d", &i);
            if (ListDelete(L, i, e)) {
                printf("删除元素：%d\n", e);
            } else {
                printf("Error\n");
            }
            break;
        }
        case 'G': {
            int i;
            ElemType e;
            scanf("%d", &i);
            if (GetElem(L, i, e)) {
                printf("第%d个元素：%d\n", i, e);
            } else {
                printf("Error\n");
            }
            break;
        }
        case 'S': {
            ElemType e;
            scanf("%d", &e);
            int i = LocateElem(L, e);
            if (i == 0) {
                printf("没有值为%d的元素\n", e);
            } else {
                printf("值为%d的元素的位序：%d\n", e, i);
            }
            break;
        }
        case 'L': {
            printf("长度：%d\n", ListLength(L));
            break;
        }
        case 'E': {
            printf("是否为空：%d\n", ListEmpty(L));
            break;
        }
        case 'F': {
            printf("是否已满：%d\n", ListFull(L));
            break;
        }
        }
    }
    DispList(L);
    DestroyList(L);
    return 0;
}

/* 请在这里填写答案 */